package com.dtx.abstractfactory.listfactory;

import com.dtx.abstractfactory.factory.Item;
import com.dtx.abstractfactory.factory.Page;

import java.util.Iterator;

/**具体的产品: ListPage类
 * ListPage类是Page类的子类。关于makeHTML方法,大家应该都已经明白了吧。ListPage将字段中保存的内容输出为HTML格式。
 * 作者名(author)用<address>标签输出。
 * 大家知道为什么while语句加载<ul>............</ul>之间吗?这是因为在while语句中append的item.makeHTML()
 * 的输出结果需要被嵌入在<ul>............</ul>之间的缘故。请大家再回顾以下ListLink和ListTray的makeHTML()方法,
 * 在它们的最外侧都会有<li>标签,就像是"螺栓"和"螺母"的接头一样。
 * while语句的上一条语句中的content继承自Page类的字段。
 */
public class ListPage extends Page {



    public ListPage(String title, String author) {
        super(title, author);
    }

    @Override
    public String makeHTML() {

        StringBuffer buffer = new StringBuffer();

        buffer.append("<html><head><title>" + title + "</title></head>\n");

        buffer.append("<body>\n");

        buffer.append("<h1>" + title + "<h1>\n");

        buffer.append("<ul>\n");

        Iterator<Object> it = content.iterator();

        while (it.hasNext()) {
            Item item = (Item) it.next();
            buffer.append(item.makeHTML());
        }

        buffer.append("</ul>\n");

        buffer.append("<hr><address>" + author + "</address>");

        buffer.append("</body></html>\n");

        return buffer.toString();
    }
}
